package com.结构型模式.代理模式.静态代理;

/**
 *
 * 代理思想 ：本来可以直接用对象访问方法，但是如果要在访问方法前后动态增加一些代码，就需要用的代理，
 * 不同的代理增加的代码不一样，所以用不同的代理访问同一个方法就会执行不同前后代码。
 * 因为代理类要增强原有对方的方法，所有需要一个接口来规范 行为， 所以才有抽象主题
 *代理和真实主题都是对代理类的实现。
 * 抽象主题（Subject）类：通过接口或抽象类声明真实主题和代理对象实现的业务方法。
 * 真实主题（Real Subject）类：实现了抽象主题中的具体业务，是代理对象所代表的真实对象，是最终要引用的对象。
 * 代理（Proxy）类：提供了与真实主题相同的接口，其内部含有对真实主题的引用，它可以访问、控制或扩展真实主题的功能。
 * 使用代理模式主要有两个目的：一是保护目标对象，二是增强目标对象。
 * 由于代理只能为一个类服务，如果需要代理的类很多，那么就需要编写大量的代理类，比较繁琐。
 * @author chenhs
 * @date 2020/10/13
 */
public class Test {
	public static void main(String[] args) {
		Agency agency = new Agency();
		agency.speak();
		AgentB agentB = new AgentB();
		agentB.speak();
		
		
	}
}
